// 包声明，主包，表明这是一个可独立运行的程序
package main

import (
	"fmt"
	// fyne 是一个用于构建跨平台 GUI 应用的库
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

// makeUI 函数用于创建用户界面组件并返回
func makeUI() (*widget.Label, *widget.Entry, *widget.Button, *widget.Label, *widget.Button, *widget.Button) {
	// 创建一个标签，初始文本为"测试文字"
	output := widget.NewLabel("测试文字")
	// 创建一个输入框
	entry := widget.NewEntry()
	// 创建一个按钮，文本为"点击按钮"，点击时执行匿名函数
	btn := widget.NewButton("点击按钮", func() {
		// 将标签的文本设置为输入框中的内容
		output.SetText(entry.Text)
	})
	num := 0
	// 创建一个标签，用于显示数字
	count := widget.NewLabel(fmt.Sprint("目前的数字是:", num))

	// 创建一个按钮，文本为"点击增加"，点击时执行匿名函数
	addBtn := widget.NewButton("点击增加", func() {
		num++
		// 更新显示数字的标签文本
		count.SetText(fmt.Sprint("目前的数字是:", num))

	})
	addBtn.Importance = widget.HighImportance
	// 创建一个按钮，文本为"点击减少"，点击时执行匿名函数
	subBtn := widget.NewButton("点击减少", func() {
		num--
		// 更新显示数字的标签文本
		count.SetText(fmt.Sprint("目前的数字是:", num))

	})
	subBtn.Importance = widget.SuccessImportance

	return output, entry, btn, count, addBtn, subBtn
}

// main 函数，程序的入口点
func main() {
	//openTwoWindows()
	// 创建一个 fyne 应用
	a := app.New()
	// 创建一个窗口，标题为"复杂页面程序"
	w := a.NewWindow("复杂页面程序")
	// 调用 makeUI 函数获取用户界面组件
	output, entry, button, num, addBtn, subBtn := makeUI()
	// 设置窗口内容为垂直容器，包含多个组件
	w.SetContent(container.NewVBox(output, entry, button, num, addBtn, subBtn))
	// 设置窗口大小
	w.Resize(fyne.Size{600, 600})
	// 显示窗口并运行应用
	w.ShowAndRun()
}
